利用主成分分析构建个股投资者情绪指标

您所在的位置:网站首页 mf 股票 利用主成分分析构建个股投资者情绪指标

利用主成分分析构建个股投资者情绪指标

2024-07-10 09:57:56| 来源: 网络整理| 查看: 265

利用主成分分析构建个股投资者情绪指标 投资者情绪指标构建数据获取主成分分析

投资者情绪指标构建

对股票的投资者情绪的研究,大部分都是通过对股票评论的内容进行情感分析来获取的,之前看到一篇论文是以隔夜收益率、个股换手率增长额、指令不平衡这 3 个指标构建投资者情绪指标,这种方法比情感分析要方便很多,所以决定用Python实现一下试试。以上三个指标的数据可以通过tushare接口获取。tushare ID:425652

数据获取

所需计算的指标为以下三个: 隔夜收益率:交易日开盘价与前一交易日收盘价的差额除以前一交易日收盘价(单位:%) 换手率增长额:交易日个股换手率与前一交易日个股换手率的差额(换手率:日度个股成交金额与日度个股流通市值的比值,单位:%) 指令不平衡:交易日个股买入总成交量与卖出总成交量的差额(单位:千万) tushare数据接口提供的数据及说明可见:https://waditu.com/document/2 需要获取的数据包括: 股票开盘价open;股票前一交易日收盘价pre_close;股票换手率turnover_rate;净流入额net_mf_amount。

开盘价、昨收价数据通过daily接口获取 daily = pro.daily(ts_code='002149.SZ', start_date='20161101', end_date='20200831', fields='trade_date,open,pre_close') 换手率数据通过daily_basic接口获取 daily_basi = pro.daily_basic(ts_code='002149.SZ', start_date='20161101', end_date='20200831', fields='trade_date,turnover_rate')

3.净流入额数据通过moneyflow接口获取

moneyflow = pro.moneyflow(ts_code='002149.SZ', start_date='20161101', end_date='20200831', fields='trade_date,net_mf_amount')

4.合并以上dataframe并计算相关指标

data = pd.merge(daily, daily_basic, on='trade_date', how='left') data = pd.merge(data, moneyflow, on='trade_date', how='left') data['date'] = pd.to_datetime(data['trade_date'], format='%Y%m%d') data['date'] = data.date.dt.date data = data.set_index('date') data = data.sort_index(ascending=True) data['inter_return'] = 100*(data['open'] - data['pre_close'])/data['pre_close'] data['turn_growth'] = data['turnover_rate'].rolling(2).apply(lambda x: x[1] - x[0]) data['net_mf_amount'] = data['net_mf_amount']/1000

计算完成后的结果如下图: 计算完成后指标数据

主成分分析

从sklearn包中导入主成分分析函数

from sklearn.decomposition import PCA

设置主成分个数为1个,即n_components=1,其他参数为默认值

pca = PCA(n_components=1)

训练模型,并得到投资者情绪变量

sentiment = pca.fit(data).transform(data) data['投资者情绪'] = sentiment

完整代码如下:

import pandas as pd import tushare as ts from sklearn.decomposition import PCA # 从tushare获取数据 token = '**********************************' pro = ts.pro_api(token) daily = pro.daily(ts_code='002149.SZ', start_date='20161101', end_date='20200831', fields='trade_date, open, pre_close') daily_basic = pro.daily_basic(ts_code='002149.SZ', start_date='20161101', end_date='20200831', fields='trade_date,turnover_rate') moneyflow = pro.moneyflow(ts_code='002149.SZ', start_date='20161101', end_date='20200831', fields='trade_date,net_mf_amount') # 计算相应指标 data = pd.merge(daily, daily_basic, on='trade_date', how='left') data = pd.merge(data, moneyflow, on='trade_date', how='left') data['date'] = pd.to_datetime(data['trade_date'], format='%Y%m%d') data['date'] = data.date.dt.date data = data.set_index('date') data = data.sort_index(ascending=True) data['inter_return'] = 100*(data['open'] - data['pre_close'])/data['pre_close'] data['turn_growth'] = data['turnover_rate'].rolling(2).apply(lambda x: x[1] - x[0]) data['net_mf_amount'] = data['net_mf_amount']/1000 data = data.dropna(axis=0, how='any') data = data[['inter_return', 'turn_growth', 'net_mf_amount']] data.columns = ['隔夜收益率', '换手率增长额', '指令不平衡'] # 主成分分析构建投资者情绪指标 pca = PCA(n_components=1) sentiment = pca.fit(data).transform(data) print('各主成分贡献度:{}'.format(pca.explained_variance_ratio_)) data['投资者情绪'] = sentiment data.to_excel('./投资者情绪.xlsx')

最终计算结果如下图: 计算结果



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭